﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using UAXInversionesWeb.logicaNegocio;
using Telerik.Web.UI;

namespace UAXInversionesWeb.cliente
{
    public partial class VenderAcciones : System.Web.UI.Page
    {
        protected CarteraCliente[] cCliente;

        protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);

            if (HttpContext.Current.Session["identificador"] != null)
            {
                cCliente = Proxy.getCarteraCliente((int)HttpContext.Current.Session["identificador"]);
                
                for (int i = 0; i < cCliente.Length; i++)
                {
                    if (cCliente[i].getNumeroDeAcciones() > cCliente[i].getAccionesEnVenta())
                    {
                        empresasDisponiblesR.Items.Add(new RadComboBoxItem(cCliente[i].getEmpresaCotizante(), cCliente[i].getCodigoDeOrden()));
                    }
                }

                if (cCliente.Length > 0)
                {
                    numAccValidator.MaximumValue = cCliente[0].getAccionesDisponibles().ToString();
                    numAccValidator.ErrorMessage = "Número de acciones entre 0  y " + cCliente[0].getAccionesDisponibles();
                    codigoOrden.Value = cCliente[0].getCodigoDeOrden();
                    buyCost.Text = cCliente[0].getValorDeCompra().ToString("N") + " €";
                }
            }
        }

        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void venderAccButton_Click(object sender, EventArgs e)
        {
            int idcliente = (int)HttpContext.Current.Session["identificador"];

            string cipherPassword = RijndaelSimple.Encrypt(confirmPass.Text, "Pas5pr@se", "s@1tValue",
                                                        "SHA1", 2, "@1B2c3D4e5F6g7H8", 256);
            if (Proxy.comprobarPassword(idcliente, cipherPassword))
            {
                int aVender = Int32.Parse(accVender.Text);
                double valorP = 0.0;

                if (valorPredefinido.Text != "")
                {
                    valorP = double.Parse(valorPredefinido.Text);
                }

                string result = Proxy.VenderAcciones(idcliente, codigoOrden.Value, empresasDisponiblesR.SelectedItem.Text, aVender, valorP);

                if (result == "")
                {
                    if (valorPredefinido.Text == "")
                    {
                        Response.Write("<script>alert('Venta por lo mejor: " + aVender + " acciones de " + empresasDisponiblesR.SelectedItem.Text + " vendidas.')</script>");
                    }
                    else
                    {
                        Response.Write("<script>alert('Venta coste predefinido (" + valorP.ToString("n") + " € por acción): " + aVender + " acciones de " + empresasDisponiblesR.SelectedItem.Text + " en espera de ser vendidas.')</script>");
                    }
                    accVender.Text = "";
                    int disp = int.Parse(numAccValidator.MaximumValue) - aVender;
                    numAccValidator.MaximumValue = disp.ToString();
                    numAccValidator.ErrorMessage = "Número de acciones entre 0  y " + disp.ToString();
                }
                else
                {
                    Response.Write("<script>alert('ERROR: " + result + "')</script>");
                }
            }
            else
            {
                Response.Write("<script>alert('Por favor, introduzca su contraseña para realizar la operación.')</script>");
            }
        }

        protected void empresasDisponiblesR_SelectedIndexChanged(object o, RadComboBoxSelectedIndexChangedEventArgs e)
        {
              for (int i = 0; i < cCliente.Length; i++)
            {
                if (cCliente[i].getCodigoDeOrden() == empresasDisponiblesR.SelectedItem.Value)
                {
                    int disponibles = cCliente[i].getAccionesDisponibles();
                    numAccValidator.MaximumValue = disponibles.ToString();
                    numAccValidator.ErrorMessage = "Número de acciones entre 0  y " + disponibles;
                    codigoOrden.Value = cCliente[i].getCodigoDeOrden();
                    buyCost.Text = cCliente[i].getValorDeCompra().ToString("N") + " €";
                    break;
                }
            }
        }
    }
}
